package com.zyg.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zyg.pojo.Position;
import com.zyg.pojo.Position;
import com.zyg.service.PositionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
@RequestMapping("/position")
public class PositionController {

    @Autowired
    private PositionService positionService;


    @GetMapping("/list")
    public String getAllPositions(
            @RequestParam(defaultValue = "1") int pageNum, // 当前页码，默认值为1
            @RequestParam(defaultValue = "10") int pageSize, // 每页大小，默认值为10
            @RequestParam(required = false) String name, // 查询条件：用户名
            @RequestParam(required = false) String description, // 查询条件：身份证号
            Model model
    ) {
        // 使用分页工具获取分页数据
        Page<Position> page = positionService.getPositionPage(pageNum, pageSize, name, description);

        // 将分页数据和页码信息传递给前端
        model.addAttribute("pageInfo", page);
        model.addAttribute("allPositions", page.getRecords()); // 当前页的用户数据

        return "position/list"; // 返回模板页面名称
    }


    @GetMapping("/{id}")
    public Position getPositionById(@PathVariable Integer id) {
        return positionService.getById(id);
    }

    @RequestMapping("/add")
    public ModelAndView add(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("position/add");
        return modelAndView;
    }
    @PostMapping("/addSave")
    public String addPosition(@ModelAttribute Position position) {
        boolean isSaved = positionService.save(position); // 保存用户信息
        if (isSaved) {
            return "redirect:/position/list"; // 保存成功后重定向到用户列表页面
        } else {
            return "error"; // 保存失败后跳转到错误页面（需要创建对应页面）
        }
    }
    @GetMapping("/delete")
    public String delete(@RequestParam Integer id) {
        boolean isRemoved = positionService.removeById(id); // 根据 id 删除用户
        if (isRemoved) {
            return "redirect:/position/list"; // 删除成功后重定向到用户列表页面
        } else {
            return "error"; // 删除失败后跳转到错误页面（需要创建对应页面）
        }
    }

    @RequestMapping("/update")
    public ModelAndView update(@RequestParam Integer id){
        ModelAndView modelAndView=new ModelAndView();
        Position positionById = positionService.getById(id);
        modelAndView.addObject("position",positionById);
        modelAndView.setViewName("position/update");
        return modelAndView;
    }
    @PostMapping("/updateSave")
    public String updatePosition(Position position) {
        boolean isUpdated = positionService.updateById(position); // 更新用户数据
        if (isUpdated) {
            return "redirect:/position/list"; // 更新成功后重定向到用户列表页面
        } else {
            return "error"; // 更新失败跳转到错误页面
        }
    }

}
